from app.common.utils import apply_sort_direction
from app.mod_base.args_parser import Field, IntField, FuncField


class AccountSchema:
    POST = {
        'account': Field('account', allow_none=False),
        'api_type': Field('api_type', allow_none=False),
        'enable': Field('enable', default=True),
        'password': Field('password', default=''),
        'yyb_id': IntField('yyb_id', default=0),
        'trade_server': Field('trade_server', default=''),
        'port': IntField('port', default=0),
        'gddm_sz': Field('gddm_sz', default=''),
        'gddm_sh': Field('gddm_sh', default=''),
        'file_path': Field('file_path', default=''),
        'enable_reverse_repo': Field('enable_reverse_repo', default=True),
        'description': Field('description', default='')
    }

    PUT = {
        'account': Field('account', allow_none=False),
        'api_type': Field('api_type', skip_none=True),
        'enable': Field('enable', skip_none=True),
        'password': Field('password', skip_none=True),
        'yyb_id': IntField('yyb_id', skip_none=True),
        'trade_server': Field('trade_server', skip_none=True),
        'port': IntField('port', skip_none=True),
        'gddm_sz': Field('gddm_sz', skip_none=True),
        'gddm_sh': Field('gddm_sh', skip_none=True),
        'file_path': Field('file_path', skip_none=True),
        'enable_reverse_repo': Field('enable_reverse_repo', skip_none=True),
        'description': Field('description', skip_none=True)
    }

    GET = {
        'sort_field': FuncField('sort_field', default='id', callback=apply_sort_direction),
    }
